package com.itlong.cloud.enumerate.ecode;

import com.itlong.cloud.enumerate.DataStatusEnum;
import lombok.Getter;
import lombok.Setter;

/**
 * <desc>
 *     公共错误码定义
 * <desc/>
 *
 * @createDate 2017/9/22
 *
 */
public enum  BaseErrorCodeEnum {
    /*mainCode为1表示APP模块错误，subCode可用范围为1至999；
    * mainCode为2表示运营模块错误，subCode可用范围为1至999；
    * mainCode为3表示物业模块错误，subCode可用范围为1至999；
    * mainCode为4表示APP-SDK模块错误，subCode可用范围为1至999；
    * mainCode为5表示一卡通模块错误，subCode可用范围为1至999；
    * mainCode为6表示云对讲模块错误，subCode可用范围为1至999；
    * */
    SUCCESS(0,"成功"),

    ERROR(1,"失败"),

    NOT_PARAM(2,"缺少必要参数"),

    PARAM_ERR(3,"参数错误"),

    CHECK_SIGN_ERR(4,"验签错误"),

    RESTART_SUCCESS(0,"重启指令下发成功"),

    ELEVATOR_CALL_ERR(11,"设备繁忙，请稍后再试")

    ;
    @Setter
    @Getter
    private ErrorCode errorCode = new ErrorCode();

    private Integer type;


    BaseErrorCodeEnum(Integer type) {
        this.type = type;
    }

    BaseErrorCodeEnum(){

    }



    /** 主错误码与错误信息构造函数
     *
     * @param mainCode
     */
    BaseErrorCodeEnum(Integer mainCode, String codeMsg) {
        errorCode.setMainCode(mainCode);
        errorCode.setSubCode(0);
        errorCode.setCodeMsg(codeMsg);
    }

    /** 全参构造函数
     *
     * @param mainCode
     * @param subCode
     */
    BaseErrorCodeEnum(Integer mainCode, Integer subCode, String codeMsg){
        errorCode.setMainCode(mainCode);
        errorCode.setSubCode(subCode);
        errorCode.setCodeMsg(codeMsg);
    }



    /**
     * <p>
     *     获取枚举的类型。
     * <p/>
     *
     * @param type  类型值。
     * @return {@link int}。
     */
    public static int getType(Integer type) {
        DataStatusEnum[] types = DataStatusEnum.values();
        for(DataStatusEnum limitCategory : types ){
            if(limitCategory.getType() == type){
                return limitCategory.getType();
            }
        }
        return 0 ;
    }
}








